﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace CoreCommon
{
    /// <summary>
    /// Класс содержит общие функции
    /// </summary>
    public class Routins
    {
        /// <summary>
        /// Проверка массива строк на наличие пустой строки
        /// </summary>
        /// <param name="strs">Массив строк</param>
        /// <returns>true-если в массиве есть пустые строки, false-в обратном случае</returns>
        public static bool StrIsEmpty(string[] strs)
        {
            return strs.Where(n => n==null || String.IsNullOrEmpty(n) || n.Trim() == "").Count() > 0? true : false;
        }
        /// <summary>
        /// Из переданного массива строк создает выходной текст, объединяющий все элемнты массива, так, что каждый элемент массива начинает новый абзац
        /// </summary>
        /// <param name="arr">Массив строк</param>
        /// <returns>Текст содержащий абзацы из каждого элемента массива</returns>
        public static string StringArrayToParagraphText(string[] arr)
        {
            StringBuilder sb = new StringBuilder();
            foreach (var item in arr)
            {
                sb.Append(item + "\n\r");
            }
            return sb.ToString().TrimEnd('\n','\r');
        }
        /// <summary>
        /// Определяет, может ли нажатая клавиша быть использовна для записи числа
        /// </summary>
        /// <param name="key">Код нажатой клавиши</param>
        /// <returns>True - если клавиша - не цифра</returns>
        public static bool IsNotNumberKey(Keys key)
        {
            return IsNotDecimalKey(key) || key == Keys.Decimal || key == Keys.OemPeriod;
        }
        /// <summary>
        /// Определяет, может ли нажатая клавиша быть использована для записи десятичного числа
        /// </summary>
        /// <param name="key">Код нажатой клавиши</param>
        /// <returns>True - если нажатая клавиша не цифра, и не десятичный разделитель</returns>
        public static bool IsNotDecimalKey(Keys key)
        {
            switch (key)
            {
                case Keys.A:
                case Keys.Add:
                case Keys.Oemplus:
                case Keys.B:
                case Keys.C:
                case Keys.D:
                case Keys.Divide:
                case Keys.Multiply:
                case Keys.Subtract:
                case Keys.Oemtilde:
                case Keys.OemMinus:
                case Keys.Oem5:
                case Keys.OemCloseBrackets:
                case Keys.Oem4:
                case Keys.Oemcomma:
                case Keys.Oem1:
                case Keys.Oem7:
                case Keys.OemQuestion:
                case Keys.E:
                case Keys.F:
                case Keys.G:
                case Keys.H:
                case Keys.I:
                case Keys.J:
                case Keys.K:
                case Keys.L:
                case Keys.M:
                case Keys.N:
                case Keys.O:
                case Keys.P:
                case Keys.Q:
                case Keys.R:
                case Keys.S:
                case Keys.Separator:
                case Keys.Space:
                case Keys.T:
                case Keys.U:
                case Keys.V:
                case Keys.W:
                case Keys.X:
                case Keys.Y:
                case Keys.Z:
                    return true;
                default:
                    return false;
            }

        }
    }
}
